/*
Problem Description
需要的时候，就把一个个大小差一圈的筐叠上去，使得从上往下看时，边筐花色交错。
这个工作现在要让计算机来完成，得看你的了。
Input
输入是一个个的三元组，分别是，外筐尺寸n（n为满足0<n<80的奇整数），中心花色字符，外筐花色字符，
后二者都为ASCII可见字符；
Output
输出叠在一起的筐图案，中心花色与外筐花色字符从内层起交错相叠，多筐相叠时，最外筐的角总是被打磨掉。
叠筐与叠筐之间应有一行间隔。
Sample Input
11 B A
5 @ W
Sample Output
 AAAAAAAAA 
ABBBBBBBBBA
ABAAAAAAABA
ABABBBBBABA
ABABAAABABA
ABABABABABA
ABABAAABABA
ABABBBBBABA
ABAAAAAAABA
ABBBBBBBBBA
 AAAAAAAAA 

 @@@ 
@WWW@
@W@W@
@WWW@
 @@@ 
 */
package com.yuan.algorithms.practice201503;

import java.util.Scanner;

public class 打印图形_叠筐 {
	static char[][] result = new char[80][80];
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int m = 0;//每个箩筐间要有一个空行，若输入结束，则不需要打印空行，
		//所以可以在打印箩筐前打印空行，第一次不用打印，用变量标记
		while (sc.hasNext()) {
			int n = sc.nextInt();
			char a = sc.next().charAt(0);
			char b = sc.next().charAt(0);
			if (n == 1) {
				if (m != 0) {
					System.out.println();
				}
				System.out.println(a);
				m = 1;
			} else {
				if (m != 0) {
					System.out.println();
				}
				// 创建图形并初始化
				boolean mark = (n/2)%2!=0;
				int k = 0;
				for (int s = 0; s < n; s++) {
					for (int i = k; i < n - k; i++) {
						for (int j = k; j < n - k; j++) {
							if (mark) {
								result[i][j] = b;
							} else {
								result[i][j] = a;
							}
						}
					}
					k++;
					mark = !mark;
				}
				// 打印
				for (int i = 0; i < n; i++) {
					for (int j = 0; j < n; j++) {
						if ((i == 0 && j == 0) || (i == 0 && j == n - 1)
								|| (i == n - 1 && j == 0)
								|| (i == n - 1 && j == n - 1)) {
							System.out.print(" ");
							continue;
						}
						System.out.print(result[i][j]);
					}
					System.out.println();
				}
				m = 1;
				//System.out.println();
			}

		}
	}
}
